In conventional SDN with OpenFlow as the south bound application programming interface (API), network devices switch flows, and the routes/paths of the flows are computed by SDN controllers. This is a data driven flow forwarding paradigm with fully centralized control, where the SDN controllers need to know all aspects of all flows. This paradigm implies a scalability issue which if not addressed will limit the applicability of SDN.
In middle to large scale data center networks, the typical number of virtual machines (VMs) running in servers will be in the range of hundreds of thousands to millions. To handle communication among the VMs, the controllers need to:
1. Deal with handshaking (first few) packets of each flow;
2. Compute paths for each flow and manage the flows.
This could mean millions of packets per second for controller CPU to process, and tens of millions of flows to compute and manage. This is a big challenge, as it is difficult and expensive to build controllers or controller cluster of this scale with today's technology.